package com.example.baiduai.ai.utils;//package com.xiaoshi.platform.ai.utils;
//
//import com.alibaba.fastjson.JSONObject;
//import com.alibaba.nacos.common.util.UuidUtils;
//import com.baidu.aip.speech.AipSpeech;
//import com.baidu.aip.speech.TtsResponse;
//import com.baidu.aip.util.Util;
//import com.google.common.collect.Maps;
//import com.xiaoshi.common.exception.PlatformException;
//import com.xiaoshi.common.utils.HttpUtils;
//import com.xiaoshi.common.utils.MyObjectUtils;
//import com.xiaoshi.platform.ai.entity.AiBaiduIcvEntity;
//import com.xiaoshi.platform.ai.entity.AiIcvEntity;
//import lombok.SneakyThrows;
//
//
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.PrintWriter;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.util.*;
//
//public class AiIcvUtils {
//
//    //设置APPID/AK/SK
//    public static final String APP_ID = "24732302";
//    public static final String API_KEY = "zzpRUGaMdsh2DRsAlCIeAUPW";
//    public static final String SECRET_KEY = "7U2ByR0ocDvUOwxNw0SwMdC4uYCovhaQ";
//
//    public static void aibaidu(String text){
//        aibaidu(text, new AiBaiduIcvEntity());
//    }
//
//    public static void aibaidu(String text,AiBaiduIcvEntity entity){
//        HashMap<String,Object> objMap =JSONObject.parseObject(JSONObject.toJSONString(entity), HashMap.class);
//        // 初始化一个AipSpeech
//        AipSpeech client = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);
//
//        // 可选：设置网络连接参数
//        client.setConnectionTimeoutInMillis(2000);
//        client.setSocketTimeoutInMillis(60000);
//
//        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
////        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
////        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理
//
//        // 可选：设置log4j日志输出格式，若不设置，则使用默认配置
//        // 也可以直接通过jvm启动参数设置此环境变量
//        //   System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");
//
//
//        // 调用接口
//        TtsResponse res = client.synthesis(text, entity.getLan(), entity.getCtp(), objMap);
//        byte[] data = res.getData();
//        org.json.JSONObject res1 = res.getResult();
//        if (data != null) {
//            try {
//                Util.writeBytesToFileSystem(data, entity.getFliepathAndFileName());
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        if (res1 != null) {
//            System.out.println(res1.toString(2));
//        }
//
//    }
//
//
//
//
//    public static void main(String[] args) {
//       String s ="我们在开发的使用，直接使用的开源框架，例如:Xutil，Volley开源框架直接访问网络，但是我们也需要知道其中的一些知识，了解一下怎样访问网络的。下面我们模拟以下客户端和服务端，看看post和get请求。";
//       // myIcv();
//       aibaidu(s);
//
//    }
//
//    public static void myIcv(){
//        AiIcvEntity aiIcvEntity = new AiIcvEntity();
//        String s ="我们在开发的使用，直接使用的开源框架，例如:Xutil，Volley开源框架直接访问网络，但是我们也需要知道其中的一些知识，了解一下怎样访问网络的。下面我们模拟以下客户端和服务端，看看post和get请求。";
//        aiIcvEntity.setTex(s);
//        aiIcvEntity.setAue(6);
//        aiIcvEntity.setCuid(UuidUtils.generateUuid());
//        doPostV2( aiIcvEntity);
//    }
//
//
//
//    public static String getAiIcvToken(){
//        HashMap<String, String> tokenMap = Maps.newHashMap();
//        tokenMap.put("grant_type","client_credentials");
//        tokenMap.put("client_id","zzpRUGaMdsh2DRsAlCIeAUPW");
//        tokenMap.put("client_secret","7U2ByR0ocDvUOwxNw0SwMdC4uYCovhaQ");
//        String s = HttpUtils.doGet("https://openapi.baidu.com/oauth/2.0/token", tokenMap);
//        String accessToken = JSONObject.parseObject(s).getString("access_token");
//        if(MyObjectUtils.isEmpty(accessToken)) throw new PlatformException("获取token  失败");
//        return  accessToken;
//    }
//
//
//    @SneakyThrows
//    public static void doPostV2( AiIcvEntity aiIcvEntity) {
//        String aiIcvToken = getAiIcvToken();
//        aiIcvEntity.setTex( ConnUtil.urlEncode(ConnUtil.urlEncode(aiIcvEntity.getTex())));
//        aiIcvEntity.setTok(aiIcvToken);
//        HttpURLConnection conn = (HttpURLConnection) new URL("http://tsn.baidu.com/text2audio").openConnection();
//        conn.setRequestMethod("POST");
//        conn.setDoInput(true);
//        conn.setDoOutput(true);
//        conn.setConnectTimeout(5000);
//        conn.setRequestProperty("Content-Type", "application/json");
//        PrintWriter printWriter = new PrintWriter(conn.getOutputStream());
//        printWriter.write(getStrParams(aiIcvEntity));
//        printWriter.close();
//        String contentType = conn.getContentType();
//        if (contentType.contains("audio/")) {
//            byte[] bytes = ConnUtil.getResponseBytes(conn);
//            String format = getFormat(aiIcvEntity.getAue());
//            File file = new File(aiIcvEntity.getFilePath(),aiIcvEntity.getFileName() +".MP3"); // 打开mp3文件即可播放
//            FileOutputStream os = new FileOutputStream(file);
//            os.write(bytes);
//            os.close();
//        } else {
//            String res = ConnUtil.getResponseString(conn);
//            throw new PlatformException("语音合成失败 失败 ："+res);
//
//        }
//
//
//    }
//
//
//
//
//    /**
//     * 对post参数进行编码处理
//     * */
//    private static String getStrParams(Object obj){
//        Map<String,String> objMap = JSONObject.parseObject(JSONObject.toJSONString(obj), Map.class);
//        String paramStr = objMap.entrySet().stream().map(a->a.getKey()+"="+String.valueOf(a.getValue())).reduce((a,b)->a+"&"+b).get();
//        return paramStr;
//    }
//
//
//
//    // 下载的文件格式, 3：mp3(default) 4： pcm-16k 5： pcm-8k 6. wav
//    private static String getFormat(Integer aue) {
//        String[] formats = {"MP3" , "pcm", "pcm", "wav"};
//        return formats[aue - 3];
//    }
//
//
//}
